{extend name="layout" /}

{block name="title"}
<title>资源文件管理 - thinkPHP极速后台开发</title>
<meta name="title" content="资源文件管理 - thinkPHP极速后台开发">
<meta name="keywords" content="配置资源文件,资源文件管理,php,后台开发包，thinkphp、easyadmin、admin,easy,thinkeasyadmin">
<meta name="description" content="资源文件管理,通过单例类灵活的管理资源文件;easyadmin灵活可定制的thinkphp的后台开发工具包,助你快速开发后台">
{/block}


{block name="main"}


<fieldset id="join" class="layui-elem-field">
    <legend>添加资源文件</legend>
    <div class="layui-field-box">

        <p>资源文件是通过类统一管理的,可实例化<code>Resource</code>类,并且调用其方法即可.</p>
        <pre class="php">
#project\app\admin\controller\Category.php

namespace app\admin\controller;
use easyadmin\app\libs\Resource;
use easyadmin\app\libs\PageList;
use easyadmin\app\libs\PageForm;
use easyadmin\app\libs\PageShow;

class Category extends \easyadmin\controller\Admin
{
    protected $jsFiles = []; //添加JS 文件
    protected $cssFiles = [];//添加 css 文件

    /**
     * 定义列表 , 在列表页面中 添加资源文件
     * @param PageList $page
     */
    protected function configList(PageList $page)
    {
        //获取资源管理类
        $resource = Resource::getInstance();
        $resource->appendJsFile('/js/my.js');   //加载 public/js/my.js 文件
        $resource->appendCssFile('/css/my.css');//加载 public/css/my.css 文件

        $page->addField('name', '分类名称', ListText::class, [
            'jsFiles'=>['/test.js'],  // 加载 public/test.js
            'cssFiles'=>['/test.css'],// 加载 public/test.css
        ]);
    }

    /**
     * 配置表单 , 在表单页面中添加资源文件
     * @param PageForm $page
     */
    protected function configFormField(PageForm $page)
    {
        //获取资源管理类
        $resource = Resource::getInstance();
        $resource->appendJsFile('/js/my.js');   //加载 public/js/my.js 文件
        $resource->appendCssFile('/css/my.css');//加载 public/css/my.css 文件

        $page
            ->addField('name', '分类名称', FormText::class,[
                'jsFiles'=>['/test.js'],  // 加载 public/test.js
                'cssFiles'=>['/test.css'],// 加载 public/test.css
            ]);
    }

    /**
     * 查看详情配置 , 在详情页面中添加资源文件
     * @param PageShow $page
     */
    protected function configShow(PageShow $page)
    {
        //获取资源管理类
        $resource = Resource::getInstance();
        $resource->appendJsFile('/js/my.js');   //加载 public/js/my.js 文件
        $resource->appendCssFile('/css/my.css');//加载 public/css/my.css 文件

        $page
            ->addField('name', '分类名称', ListText::class,[
                'jsFiles'=>['/test.js'],  // 加载 public/test.js
                'cssFiles'=>['/test.css'],// 加载 public/test.css
            ]);
    }

        /**
     * 定义列表
     * @param PageList $page
     */
    protected function configList(PageList $page)
    {
        //操作按钮 添加资源文件
        $page->addAction('查看', 'show', [
            'jsFiles'=>['/test.js'],  // 加载 public/test.js
            'cssFiles'=>['/test.css'],// 加载 public/test.css
        ]);

        //定义页面的添加按钮
        $addBtn = new Btn();
        $addBtn->setLabel('添加');
        $addBtn->setUrl('add');
        $addBtn->setIcon('layui-icon layui-icon-add-1');
        $page->setActionAdd($addBtn);
    }

    ...
    ...
    # 可以在任意地方活动资源管理类  $resource = Resource::getInstance();  并且调用方法添加 资源文件
    # 按钮, 字段 都可以在 options 选项中 传入  jsFiles , cssFiles  加载自己独有得 css 或者 js

}

        </pre>
        <p>文件会在项目的根目录中查找, 如果没有修改 thinkphp 的运行配置; js/my.js 的存放目录为 project/public/js/my.js </p>
    </div>
</fieldset>

<fieldset class="layui-elem-field layui-field-title">
    <legend>全局添加资源文件</legend>
    <div class="layui-field-box">


        <p><b>a.</b>重写layout页面,<a href="{:url('template_extend')}#rewrite">重写规则</a></p>
        <pre class="html">{literal}
#project\app\admin\views\category\my_page.html

&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
&lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot;&gt;
    &lt;title&gt;Title&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

   1. 完全重写;
   2. 也可以复制 layout.html 进行修改

&lt;/body&gt;
&lt;/html&gt;

{/literal}</pre>


        <p><b>b.</b> 定义一个 Admin 类,在Admin 类中添加资源文件 ,然后其他页面都继承这个类</p>
        <pre class="php">{literal}
#project\app\admin\controller\Admin.php

use easyadmin\controller\Admin as easyAdmin;

class Admin extends easyAdmin
{
    protected $jsFiles = []; //添加JS 文件
    protected $cssFiles = [];//添加 css 文件
}


#project\app\admin\controller\Category.php
class Category extends Admin
{

}


{/literal}</pre>
    </div>
</fieldset>

{/block}
